這個 HIP 生態系統 被設計為一個輕量級抽象層,旨在實現 AMD 與 NVIDIA 架構之間的原始碼相容性。它利用了 ROCm(Radeon 開源運算) 堆疊,特別是使用了 異質化系統架構(HSA) 執行時環境以及 核心融合驅動程式(KFD)。
1. 初始化啟動
初始化過程從透過 hsa_init(0, ...) 與 hsaKmtOpenKFD(...)這兩個建立呼叫來建立使用者空間應用程式與 AMD GPU 硬體之間的通訊橋樑。
2. 拓撲結構與功能探測
在執行核心之前,執行時環境會使用 hsaKmtAcquireSystemProperties 與 hsaKmtGetNodeProperties來識別硬體功能。它使用 hsaKmtMapMemoryToGPUNodes將物理記憶體對應至 GPU 節點,以確保裝置能看見頁面表。
3. 編譯流程
CUDA 與 HIP 之間的橋樑由兩大支柱構成: hipify-perl (基於正規表示式的轉譯器)以及 hipcc (編譯器封裝工具)。
# 迁移工作流程範例
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out
4. 版本控制邏輯
相容性透過精確的公式來強制執行,以確保 hipRuntimeGetVersion 與 HSA 延伸表格一致:
$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>